package 静态内部类;

/*
* 1、如何获取 静态内部类对象
* 2、如何在静态内部类当中 访问外部类的非静态的数据成员
*    实例化外部类对象，进行访问
* */

class OuterClass{

    public int date1=1;
    private int date2=2;
    public static int date3=3;

    static class InnerClass{//不依赖于外部类对象
        public int date4=4;
        private int date5=5;
        public static int date6=6;

        public void test(){
            OuterClass outerClass=new OuterClass();
            System.out.println(outerClass.date1);

            System.out.println("内部类的test()方法");
            System.out.println(date4);
            System.out.println(date5);
            System.out.println(date6);

            System.out.println(date3);

            //System.out.println(date1);--静态内部类不依赖外部类对象，自然拿不到外部类的成员变量
        }

    }
}
public class Test {
    public static void main(String[] args) {
        OuterClass.InnerClass innerClass=new OuterClass.InnerClass();
        innerClass.test();
    }

    //局部内部类
    //编译器也有自己独立的字节码文件，命名格式：外部类名字￥（美元符号）数字内部类名字.class
    public void func(){
        class Inner{//不可被public、static修饰
            public int data1=1;//只能在当前方法体内使用
        }
        Inner inner=new Inner();
        System.out.println(inner.data1);
    }

}
